function [EfficiencyMatrix, RotorDirectionVector] = calControlMatrix(ConfigCurrent, ModelParam_Airframe_CMP)
% ModelParam_Airframe_CMP   质心位于非质心机体系中的坐标
% EfficiencyMatrix 选中的动力布局下的控制效率矩阵
% 动力系统布局配置有两种配置方法，采用结构体的方式表示
% 结构体中包好两个成员分别是 Type Matrix
% #第一种：结构体中成员Type值为1
    % 数组中列号表示飞控所对应的电机序号。
    % 例如飞控输出的1号电机控制量对应数组中第一列的参数

    % 第一行表示：电机旋转方向，俯视时，顺时针为 -1 逆时针为 +1 
    % 第二行表示：机臂在机体坐标系下的方位角 
    % 第三行表示：机臂长度
    % 第四行表示：反扭力矩系数与拉力系数之比
% #第二种：结构体中成员Type值为2
    % 第二种方法需要提供机臂在 非质心机体系中的坐标，以及质心在非质心机体系中的坐标。
    % 非质心机体系的原点可以与质心重合，也可以不重合，
    % 此举是为了便于表述质心变化对力臂产生的影响，
    % 力臂的长度会随着质心的变化而变化，但是机臂对于机体却是固定的。
    % 所以需要选取一非质心（例如形心）坐标系与机体固连确保对于机臂和质心的位置描述是固定的。机体非质心坐标系正方向应该与NED对应。
    
    % 配置矩阵为5x8大小，8列代表八个旋翼，本模型目前按照最多8个旋翼来设计
    % 列号对应飞控输出的电机序号，例如第一列就是飞控中PWM1的输出对应的电机。
    % 也就是说即使都是六轴，那么如果不同的飞控对于电机序号对应的位置定义各不同的话，那么就应该对应不同的动力布局配置。
    % 第一行表示：电机旋转方向，俯视时，顺时针为 -1 逆时针为 +1
    % 第二行到第四行分别表示：机臂坐标的x、y、z单位为m
    % 第五行表示：反扭力矩系数与拉力系数之比 $c_M/c_T$
if ConfigCurrent.Type ==1
    Matrix = [  0 0 0 0 0 0 0 0;
        0 0 0 0 0 0 0 0;
        -1 -1 -1 -1 -1 -1 -1  -1;
        -ConfigCurrent.Matrix(3,:).* sin(ConfigCurrent.Matrix(2,:));
        ConfigCurrent.Matrix(3,:).* cos(ConfigCurrent.Matrix(2,:));
        ConfigCurrent.Matrix(4,:).* ConfigCurrent.Matrix(1,:)];
    Vector = ConfigCurrent.Matrix(1,:);
else
    Matrix = [  0 0 0 0 0 0 0 0;
        0 0 0 0 0 0 0 0;
        -1 -1 -1 -1 -1 -1 -1  -1;
        -(ConfigCurrent.Matrix(3,:)- ModelParam_Airframe_CMP(2));
        ConfigCurrent.Matrix(2,:)- ModelParam_Airframe_CMP(1);
        ConfigCurrent.Matrix(5,:).* ConfigCurrent.Matrix(1,:)];
    Vector = ConfigCurrent.Matrix(1,:);
end
EfficiencyMatrix = Matrix;
RotorDirectionVector = Vector;
end